Class
dumpOn:indent:!
5208925!
debugging!
0CharOutputStream:Int:! !
#categories!
private!
parent accessing!
geometry-nonlocal!
geometry-local!
accessing!
testing!
private-testing!
notification!
control!
printing!
input focus!
displaying!
region operations!
event handling!
restricted-glyph event handling!
restricted-glyph support!
restricted-to parts!
wrapping!
initialization!
restricted-to session!
private-grabbing!
debugging!
restricted-to parent!
private-user messages-win32 restricted!
user-messages!
standard dialog boxes!
private-dialog boxes!
wrapping utilities!
custom dialog boxes!
invalidation!
launching!
core sampler! !
localDisplayOn:!
5197508!
displaying!
0Canvas:! !
positionRelativeTo:!
5178974!
geometry-nonlocal!
0Visual:Point! !
recordPrefs!
5171955!
private!
1! !
printAllocOn:!
5209189!
debugging!
0CharOutputStream:! !
id:!
5182145!
accessing!
0Int:! !
layoutValid!
5185895!
testing!
0Boolean! !
nextFocusCandidateAfter:ifLast:!
5196627!
input focus!
2Visual:[^X def]:Visual|X! !
hasMedium!
5186490!
private-testing!
1Boolean! !
enclosedRect!
5197862!
region operations!
0Rect! !
containerBackgroundPainter!
5203892!
restricted-to parts!
0Painter! !
firstFocusCandidateIfAbsent:!
5193954!
input focus!
0[^Visual]:Visual! !
launchCustomDialog:for:showApply:modal:toValidate:action:!
5925404!
custom dialog boxes!
0Str:Visual:Boolean:Boolean:[[]]:[]:Window! !
session:!
5183448!
accessing!
0Session:! !
parentThatIsDirectChildOf:!
5172729!
parent accessing!
0VisualParent:VisualParent! !
keyDown:focus:event:!
5199239!
event handling!
0Symbol:Visual:UIEvent:Boolean! !
invalidate:!
5230409!
invalidation!
0Region:! !
adjustPositionTo:!
5173890!
geometry-nonlocal!
0Point:! !
allocation:at:!
5179326!
geometry-local!
0Region:Point:! !
withDefaultButton:!
5226391!
wrapping utilities!
0Button:DefaultButtonWrapper! !
isSurelyRigid!
5185764!
testing!
0Boolean! !
parent:id:!
5210165!
restricted-to parent!
0VisualParent:Int:! !
dumpOn:!
5208763!
debugging!
0CharOutputStream:! !
point:relativeTo:!
5176351!
geometry-nonlocal!
0Point:Visual:Point! !
lastFocusCandidateIfAbsent:!
5195889!
input focus!
0[^Visual]:Visual! !
layoutStatus!
5170573!
private!
1Int! !
becomeFocus!
5192958!
input focus!
0! !
promptOk:title:type:action:!
5213823!
user-messages!
0Str:Str:Symbol:[]:! !
userPickSaveFileWithAction:fileTypes:defaultFile:defaultDir:title:!
5222550!
standard dialog boxes!
0[FilePath]:Cltn[Tuple[Str,Str]]:FilePath|Nil:FilePath|Nil:Str:! !
customDialogFor:showApply:toValidate:action:!
5226801!
custom dialog boxes!
0Visual:Boolean:[[]]:[]:Visual! !
backgroundPainter!
5181316!
accessing!
0Painter! !
isFocus!
5185297!
testing!
0Boolean! !
naturalIn:at:!
5203070!
restricted-glyph support!
0Medium:Point:Region! !
withBackdrop:!
5225823!
wrapping utilities!
0Painter:Frame! !
changeAllocation:at:!
5179777!
geometry-local!
0Region:Point:! !
makeVisibleAsFocus!
5170846!
private!
1! !
allocation:at:toLayout:!
5168835!
private!
1Region:Point:[]:! !
promptRetryCancel:title:type:default:action:!
5215515!
user-messages!
0Str:Str:Symbol:Int:[Boolean]:! !
checkLayout:!
5206071!
restricted-to session!
0SeqCltn[Region]:! !
enclosedRectFor:!
5201840!
restricted-glyph support!
0VisualGlyph:Rect! !
displayPopUpMenu:at:forButton:!
5189937!
control!
0Menu:Point:Symbol:! !
nonLocalCount:!
5171316!
private!
1Int:! !
inParentMightIntersect:!
5184679!
testing!
0Region:Boolean! !
layoutStatus:!
5170707!
private!
1Int:! !
release!
5190846!
control!
0! !
parentThatIsDirectChildOf:ifAbsent:!
5173094!
parent accessing!
2VisualParent:[^FAIL def]:VisualParent|FAIL! !
win32PromptUser:title:buttons:type:default:!
5211073!
private-user messages-win32 restricted!
1Str:Str:ExternalData:Symbol:Int:Boolean|Nil! !
#revision!
$Revision: 1.11 $! !
lastFocusCandidateBefore:!
5194899!
input focus!
0Visual:Visual! !
lastFocusCandidateBefore:ifFirst:!
5195304!
input focus!
2Visual:[^X def]:Visual|X! !
keyUp:focus:event:!
5199471!
event handling!
0Symbol:Visual:UIEvent:Boolean! !
natural!
5180377!
geometry-local!
0Region! !
mouseEvent:at:event:!
5199701!
event handling!
0Symbol:Point:UIEvent:Boolean! !
displayOn:for:!
5201652!
restricted-glyph support!
0Canvas:VisualGlyph:! !
promptYesNo:title:type:default:action:!
5216480!
user-messages!
0Str:Str:Symbol:Int:[Boolean]:! !
inParentContainsPoint:!
5184362!
testing!
0Point:Boolean! !
naturalIn:!
5202906!
restricted-glyph support!
0Medium:Region! !
displayNowIfInvalid!
5189739!
control!
0! !
prefs!
5180899!
geometry-local!
0SeqCltn[Region]! !
character:focus:event:!
5199004!
event handling!
0Character:Visual:UIEvent:Boolean! !
blinkState!
5169783!
private!
1Boolean! !
allocationInParent:at:!
5174688!
geometry-nonlocal!
0Region:Point:! !
allocationInParent:!
5174379!
geometry-nonlocal!
0Region:! !
withPopUpMenuSource:!
5226603!
wrapping utilities!
0[^Menu]:Visual! !
positionGivenAllocationInParent:!
5177048!
geometry-nonlocal!
0Region:Point! !
blinkFocus:!
5205657!
restricted-to session!
0Boolean:! !
close!
5189438!
control!
0! !
needsLayout!
5186051!
testing!
0Boolean! !
setPosition:!
5172301!
private!
1Point:! !
promptOkCancel:title:type:default:action:!
5214559!
user-messages!
0Str:Str:Symbol:Int:[Boolean]:! !
lostGrab!
5188198!
notification!
0! !
displayOn:!
5197230!
displaying!
0Canvas:! !
userPickOpenFileWithAction:fileTypes:defaultFile:defaultDir:title:allowReadOnly:mustExist:!
5219733!
standard dialog boxes!
0[FilePath,Boolean]:Cltn[Tuple[Str,Str]]:FilePath|Nil:FilePath|Nil:Str:Boolean:Boolean:! !
focusCandidatesDo:!
5194185!
input focus!
0[Visual]:! !
scrollIfNeededToMakeVisible:relativeTo:minimizeMotion:!
5191822!
control!
0Rect:Visual:Boolean:! !
nativeWindow!
5182437!
accessing!
0Window|Win32Control! !
asVisual!
5181190!
accessing!
0Visual! !
printOn:!
5192444!
printing!
0CharOutputStream:! !
initialize!
5205436!
initialization!
0! !
withoutWrapper:!
5204967!
wrapping!
0VisualWrapper:Visual! !
printStateOn:!
5192660!
printing!
0CharOutputStream:! !
positionChanged!
5203435!
restricted-glyph support!
0! !
moveTo:!
5176071!
geometry-nonlocal!
0Point:! !
userChangeFontAndPaintFor:action:!
5218263!
standard dialog boxes!
0Painter:[Painter]:! !
#subtype!
true! !
dump!
5208632!
debugging!
0! !
containsPoint:!
5184079!
testing!
0Point:Boolean! !
#abstract!
true! !
oldPrefs!
5180565!
geometry-local!
0SeqCltn[Region]! !
keyUp:focus:event:for:!
5200737!
restricted-glyph event handling!
0Symbol:Visual:UIEvent:VisualGlyph:Boolean! !
min!
5180209!
geometry-local!
0Region! !
promptYesNoCancel:title:type:default:action:!
5217342!
user-messages!
0Str:Str:Symbol:Int:[Boolean|Nil]:! !
positionInContainingNativeWindow!
5182739!
accessing!
0Point! !
id!
5182030!
accessing!
0Int! !
layoutComplete!
5170347!
private!
1! !
enclosingRect!
5198567!
region operations!
0Rect! !
addNonLocalCount:!
5203590!
restricted-to parts!
0Int:! !
hasParent!
5172446!
parent accessing!
0Boolean! !
isRectangularAndOpaque!
5186974!
private-testing!
1Boolean! !
allocationRelativeTo:!
5175052!
geometry-nonlocal!
0Visual:Region! !
invalidate!
5229775!
invalidation!
0! !
#group!
ui! !
withBorder:!
5226000!
wrapping utilities!
0Border:Frame! !
containsFocus:!
5193632!
input focus!
0Boolean:! !
#branded!
true! !
nonLocalCount!
5182602!
accessing!
0Int! !
acquireGrab!
5208271!
private-grabbing!
1Boolean! !
positionInTopWindow!
5182936!
accessing!
0Point! !
allocationInParent!
5174167!
geometry-nonlocal!
0Region! !
changing!
5188851!
control!
0! !
#supportedProtocolString!
UIEventHandler; Glyph; RelayoutTarget! !
enabled!
5204082!
restricted-to parts!
0Boolean! !
scrollMeOrAParentBy:vertical:!
5867956!
control!
0Int:Boolean:! !
keyDown:focus:event:for:!
5200469!
restricted-glyph event handling!
0Symbol:Visual:UIEvent:VisualGlyph:Boolean! !
mouseEvent:at:event:for:!
5201001!
restricted-glyph event handling!
0Symbol:Point:UIEvent:VisualGlyph:Boolean! !
promptAbortRetryIgnore:title:type:default:action:!
5212895!
user-messages!
0Str:Str:Symbol:Int:[Boolean|Nil]:! !
character:focus:event:for:!
5200198!
restricted-glyph event handling!
0Character:Visual:UIEvent:VisualGlyph:Boolean! !
isAttached!
5185128!
testing!
0Boolean! !
isFocusCandidate!
5186782!
private-testing!
1Boolean! !
session!
5183319!
accessing!
0Session! !
allocation!
5179187!
geometry-local!
0Region! !
isNonLocal!
5185619!
testing!
0Boolean! !
gridFor:for:!
5202208!
restricted-glyph support!
0Point:VisualGlyph:Rect! !
prefsStatus!
5171457!
private!
1Int! !
gridFor:!
5181650!
accessing!
0Point:Rect! !
noPosition!
5171190!
private!
1! !
#comment!
A user-interface object that is responsible for the "physical", low-level tasks associated with
	layout, rendering, and event processing.

%note relative to physical media: we define pixels to be the areas BETWEEN integral
	physical coordinates.  The general convention when referring to a pixel is to use the
	coordinates of the grid point at its upper left corner.

Subclass Responsibilities:

	%responsibility #parent: - any subvisuals must be sent #parent:.
	%responsibility #detaching - must be forwarded to any subvisuals before executing the Visual version.
	%responsibility #release - must be forwarded to any subvisuals.
	%responsibility #allocation:at: - must be implemented to cause #allocation: and then #position: to be sent
			to all attached subvisuals.  The version in this class must also be executed.
	%optional #isRectangularAndOpaque - must be overidden if the receiver is not both rectangular and 
			completely opaque.  In this case, you can optionally reimplement #enclosedRegion to provide a
			more precise enclosed region.
	%optional minAndMax - The min and max regions are the same as the natural region by default.
			You can override #min and #max to use different limits.

Notes on use of regions: 
	A visual has a rendering region, which it draws on.  Some visuals (e.g. characters) draw a complicated
	non-square shape on their background; 

	Different host window systems may have radically different facilities for dealing with such regions, in
	terms of clipping, etc, so the visual protocol is designed to work with regions in a way that
	is entirely portable, yet can be made to support host region operations without modification
	of the general protocols.  The essence of how to accomplish this is to recognize that since
	any visual might cover a region too complicated (or too slow) to operate on precisely,
	the protocols don't usually try to deal with precise regions... they deal with 'conservative'
	regions.  This allows use of very simple region representations, like rectangles, without
	loss of generality, yet works with more precise ones.  The two fundamental region queries
	for a visual are conservative in opposite fashions: #enclosingRegion, and #enclosedRegion.
	The first is allowed to include too much, and the other is allowed to include too little.  By
	explicitly allowing this, visuals are free to use the most precise region representation
	possible, but can fall back on simpler forms like rectangles without loss of correctness
	if they are not supported, transparently to clients of the visual.

%todo: Region should not be a supertype of Visual; that is an implementation detail.

Tags: %User %UI

(c) 1996-1997 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 
Use and distribution of this software is subject to the terms of the attached source license
! !
position!
5176911!
geometry-nonlocal!
0Point! !
moveBy:!
5175389!
geometry-nonlocal!
0Point:! !
continuousGridFor:!
5181479!
accessing!
0Point:Rect! !
drillAt:for:!
5230998!
core sampler!
0Point:CoreSampler:! !
baselined!
5225452!
wrapping utilities!
0Visual! !
withBorderInset:!
5226172!
wrapping utilities!
0Number|Point|Rect:! !
launchWithTitle:!
5877578!
launching!
0Str:! !
prefsStatus:!
5171588!
private!
1Int:! !
nextFocusCandidateAfter:!
5196193!
input focus!
0Visual:Visual! !
allocation:at:for:!
5201260!
restricted-glyph support!
0Region:Point:VisualGlyph:! !
max!
5180041!
geometry-local!
0Region! !
hasSession!
5186636!
private-testing!
1Boolean! !
layout!
5169930!
private!
1! !
noParent!
5209833!
restricted-to parent!
0! !
adjustPositionBy:!
5173613!
geometry-nonlocal!
0Point:! !
#extensionsAreSubtypes!
true! !
renderingRegion!
5183107!
accessing!
0Region! !
relayoutAndInvalidate!
5190456!
control!
0! !
allocationFor:!
5201470!
restricted-glyph support!
0VisualGlyph:Region! !
releaseGrab!
5208488!
private-grabbing!
1! !
scrollIfNeededToMakeVisible!
5191266!
control!
0! !
prerecordPrefsIfNeeded!
5204528!
restricted-to parts!
0! !
detaching!
5187259!
notification!
0! !
iconFlagsFor:!
5210631!
private-user messages-win32 restricted!
1Symbol:ExternalData! !
with3DBorder!
5225604!
wrapping utilities!
0Frame! !
scrollIfNeededToMakeVisible:!
5191507!
control!
0Rect:! !
#superclassTypeString!
Region! !
win32FilterStructFor:!
5224726!
private-dialog boxes!
1Cltn[Tuple[Str,Str]]:ExternalProxy! !
topWindow!
5183937!
accessing!
0Window! !
medium!
5182298!
accessing!
0Medium! !
#instanceVariableString!
parent <VisualParent>
id <Int>						"The child id, assigned by the parent"
session <Session>		"Initialized if the visual is attached"
nonLocalCount <Int>
				"# of descendants that must be notified if we are detached"
prefsStatus <Int>
			"Status of allocation preferences.  States are:
				 Visual invalid, Visual mightHaveChanged, and Visual valid"
position <Point>		"our origin in the parent's coordinates"
allocation <Region>
layoutStatus <Int>
			"Status of allocation & position.  States are:
				Visual invalid, Visual needsRelayout, Visual valid"
		! !
needsRelayout!
5186260!
testing!
0Boolean! !
removeParentsFrom:alreadyChecked:!
5207833!
restricted-to session!
0Set[RelayoutTarget]:Set[RelayoutTarget]:! !
nativePositionChanged!
5188410!
notification!
0! !
parent!
5172590!
parent accessing!
0VisualParent! !
localDisplayOn:for:!
5202396!
restricted-glyph support!
0Canvas:VisualGlyph:! !
maxIn:!
5202594!
restricted-glyph support!
0Medium:Region! !
propagateSession!
5171725!
private!
1! !
minIn:!
5202750!
restricted-glyph support!
0Medium:Region! !
isGrabbing!
5185467!
testing!
0Boolean! !
enclosingRectFor:!
5202023!
restricted-glyph support!
0VisualGlyph:Rect! !
isFocus:!
5194449!
input focus!
0Boolean:! !
noParentFor:!
5203268!
restricted-glyph support!
0VisualGlyph:! !
launch!
5877865!
launching!
0! !
